<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <ul>
        <li>111</li>
        <li>222</li>
        <li>333</li>
    </ul>
    <script>
        // 1.实现一个事件绑定 ，一千div 点击一千个div的时候都绑定弹出事件？
        // let lis = document.querySelectorAll("li")
        // lis.forEach(li=>{
        //     li.onclick = function(){
        //         console.log(1111);
        //     }
        // })
        // let ulEle = document.querySelector("ul");
        // ulEle.onclick = function(e){
        //     let ele =  e.target;
        //     console.log(ele.nodeName);
        //     if(ele.nodeName=="LI"){
        //         console.log("点了");
        //     }
        // }
        
        // 2.一次执行arr里的异步函数

        // 异步队列
        // let arr = [function () {
        //     return new Promise(resolve => {
        //         setTimeout(() => {
        //             resolve(11111)
        //         }, 1000);
        //     })
        // },
        // function () {
        //     return new Promise(resolve => {
        //         setTimeout(() => {
        //             resolve(222)
        //         }, 1000);
        //     })
        // },
        // function () {
        //     return new Promise(resolve => {
        //         setTimeout(() => {
        //             resolve(3333)
        //         }, 1000);
        //     })
        // }]

        // 1.await 只能出现在async 且不能是嵌套函数
        // 2.await 只会等待一个 async 的结果
        //  function myfn(){
        //     arr.forEach(async fn=>{
        //        let res =  await fn();
        //        console.log(res);
        //     })
        // }
        // myfn();

        // async function myfn(){
        //     for(let i=0;i<arr.length;i++){
        //        let res =  await arr[i]();
        //        console.log(res);
        //     }
        // }
        // myfn();

// 余高辉
// 1.字符串 let str = "abcefdaabcdef"; 统计 字符出现个个数
// let str = "abcefdaabcde";
// // 利用 对象的下标 不重复特性
// let obj = {};
// for(let i=0;i<str.length;i++){
//     if(typeof obj[str[i]] == "undefined"){
//         obj[str[i]] = 1;
//     }else{
//         obj[str[i]]++
//     }
// }
// console.log(obj)





// 2.对自定义事件的理解？
// 观察者模式 
// 事件监听  
// addEventListener  
// addEvent("myevent",fn1); --- 通过对象 把函数保存起来 不执行  一对多的关系
// trigger 或者 dispatchEvent  或者 emit
// removeEvent("事件名称")
// 系统自带的自定义事件  EventTarget  
// document.onclick = function(){
//     console.log(111)
// } 
// document.onclick = function(){
//     console.log(222)
// } 
// document.addEventListener("click",function(){
//     console.log(111)
// })
    </script>
</body>

</html>